package com.mdb.open.trade.domain.dto.trade;


/*
* Copyright (C), 2017-2019 澳发科技(MDB)
* FileName: TfMerchantBankAccountService.java
* Author:   you.yichao
* Date:     2019-07-08
* History:
* <author>          <time>          <version>          <desc>
* you.yichao         2019-07-08          V1.00             代码生成器初始生成代码
* -----------------------------------------------------------
* 作者姓名           修改时间           版本号            描述
*/

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.open.common.enums.trade.type.MerBankAccDefaultTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
* 类描述：
*  商户收款账号表数据传输类
*
* @author you.yichao
* @date 2019-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="AddMerchantBankAccountDto", description="商户收款账号表Dto对象")
public class AddMerchantBankAccountDto extends DataObjectBase {

    private static final long serialVersionUID = 1L;

    /**
     * 商户编号
     */
    @ApiModelProperty(value = "商户编号")
    @NotBlank(message = "商户编号不允许为空")
    private String merchantNo;

    /**
     * 收款单位中文名称
     */
    @ApiModelProperty(value = "收款单位中文名称")
    @NotBlank(message = "收款单位中文名称不允许为空")
    @Size(max = 60, message = "收款单位中文名称最多输入60位字符")
    private String accCnName;

    /**
     * 收款单位英文名称
     */
    @ApiModelProperty(value = "收款单位英文名称")
    @NotBlank(message = "收款单位英文名称不允许为空")
    @Size(max = 60, message = "收款单位英文名称最多输入60位字符")
    @Pattern(regexp = "^[A-Za-z0-9/\\-?:().,'+ ]+$", message = "收款单位英文名称仅支持字母、数字及以下字符：/ - ? : ( ) . , ' + CrLf Space")
    private String accEnName;

    /**
     * 收款账号
     */
    @ApiModelProperty(value = "收款账号")
    @NotBlank(message = "收款账号不允许为空")
    @Pattern(regexp = "^[A-Za-z0-9/\\-?:().,'+ ]{1,34}$", message = "收款账号仅支持字母、数字及以下字符：/ - ? : ( ) . , ' + CrLf Space")
    private String accNo;

    /**
     * 收款账号分行
     */
    @ApiModelProperty(value = "收款账号分行")
    private String accBranch;

    /**
     * 收款单位地址中文
     */
    @ApiModelProperty(value = "收款单位地址中文")
    private String receiveAddressCn;

    /**
     * 收款单位地址英文
     */
    @ApiModelProperty(value = "收款单位地址英文")
    @Size(max = 66, message = "收款单位地址英文最多输入66位字符")
    @NotBlank(message = "收款单位地址英文不允许为空")
    @Pattern(regexp = "^[A-Za-z0-9/\\-?:().,'+ ]+$", message = "收款单位地址英文仅支持字母、数字及以下字符：/ - ? : ( ) . , ' + CrLf Space")
    private String receiveAddressEn;

    /**
     * 收款行swift code
     */
    @ApiModelProperty(value = "收款行swift code")
    @NotBlank(message = "swift code不允许为空")
    @Pattern(regexp = "^[A-Za-z0-9]{1,11}?$", message = "收款行swift code仅支持字母、数字,且长度为11位以内")
    private String recevSwiftCode;

    /**
     * 中间行swift code
     */
    @ApiModelProperty(value = "中间行swift code")
    @Pattern(regexp = "^[A-Za-z0-9]{1,11}?$", message = "中间行swift code仅支持字母、数字,且长度为11位以内")
    private String intermediarySwiftCode;


    /**
     * 默认收款账号类型
     */
    @ApiModelProperty(value = "默认收款账号类型")
    @NotNull(message = "默认收款账号类型不允许为空")
    private MerBankAccDefaultTypeEnum defaultType;

}
